AivenがAWS PrivateLinkに対応したので試してみた
はじめに
アライアンス統括部の佐々木です。AivenがAWS PrivateLinkに対応しました。
早速やってみます!
やってみた
Project VPCの作成
Aivenのサービスを作成する前に、Project VPCの作成が必要になります。[VPC]をクリックし、[Project VPC]画面を開きます。[Cloud]を選択、[IP range]を入力し、[Create VPC]をクリックします。
Project VPCが作成されます。
サービスの作成
Aiven Dashboardの[Services]画面から[Create a new service]をクリックします。
[Create Service]画面に遷移します。今回はMySQLを選択します。Cloudの指定はAWSとします。
[3. Select Service Cloud Region]は、[VPC]をクリックして開き、先程作成したVPCを選択します。[Create Service]ボタンをクリックします。
しばらくするとサービスが立ち上がるので、クリックして詳細画面に移動します。
Aiven側のPrivatelinkの作成
サービス詳細画面から[Network]タブを開き、[Create Privatelink]をクリックします。
[Create Privatelink]画面が開きます。[Principals]欄に、利用するIAM情報を入力し、[Create]ボタンをクリックします。
Privatelinkが作成中になります。
作成が完了すると、ステータスがactiveになります。
AWS側の設定
AWS管理コンソールでVPCを開き、[エンドポイント」をクリックして選択します。[エンドポイントの作成]をクリックします。
[エンドポイントの作成]画面が開きます。[サービスカテゴリ]で「サービスを名前で検索」を設定し、[サービス名]にAivenで作成したPrivatelinkのAWS service nameを入力します。[検証]ボタンをクリックします。
検証が成功すると「サービスが見つかりました」と表示されます。下部のVPCとサブネットを選択します。
下部でセキュリティグループを選択し、[エンドポイントの作成]ボタンをクリックします。
エンドポイントが作成されます。[閉じる]をクリックします。
Aiven側でのPrivatelinkの有効化
最後にAiven側でPrivatelinkを有効化する設定を行います。サービスの詳細画面から[Overview]を開き、下部の[Advanced configuration]で[Add configuration option]をクリックします。
privatelink_access.mysqlとprivatelink_access.mysqlxを追加し、有効にします。[Save advanced configuration]をクリックします。
検証
AWS上のEC2からAivenに接続出来るか試してみます。まずはエンドポイントのDNS名をdigします。ちゃんとプライベートIPアドレスが返ってきています。
$ dig vpce-XXXX.ap-northeast-1.vpce.amazonaws.com ;; ANSWER SECTION: vpce-XXXX.ap-northeast-1.vpce.amazonaws.com. 60 IN A 192.168.2.117 vpce-XXXX.ap-northeast-1.vpce.amazonaws.com. 60 IN A 192.168.1.244
さて、ではEC2からAivenのMySQLに接続...しようと思ったのですが、微妙にハマりました。Aivenで立ち上げたMySQLは8.0で、EC2にインストールされているMariaDBのクライアントだとcaching_sha2_password問題で接続できなかったためです。
そこで、MariaDBをアンインストールし、MySQL8クライアントをインストールしました。
$ sudo yum remove mariadb-libs $ sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm $ sudo yum-config-manager --enable mysql80-community $ sudo yum install -y mysql-community-client
そしてMySQL8クライアントでPrivateLink経由で接続してみます。
$ mysql -u avnadmin -p -h vpce-XXXX.ap-northeast-1.vpce.amazonaws.com -P 28813 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2939 Server version: 8.0.26 Source distribution Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
ということで、AWSのEC2からAivenのサービスにPrivateLink経由で接続することが出来ました。
さいごに
PrivateLink経由の接続により、インターネットを介さなくてもデータストアにアクセス可能になりました。よりセキュアにAivenを使うことが出来ますね。